package alfabankapi

type Link struct {
	Href string `json:"href"`
	Rel  string `json:"rel"`
}

// https://developers.alfabank.ru/products/alfa-api/documentation/articles/transactions/articles/statement/v1/statement?navFilter=h2h
type Transaction struct {
	Amount struct {
		Amount       float64 `json:"amount"`
		CurrencyName string  `json:"currencyName"`
	} `json:"amount"`
	AmountRub struct {
		Amount       float64 `json:"amount"`
		CurrencyName string  `json:"currencyName"`
	} `json:"amountRub"`
	CorrespondingAccount string `json:"correspondingAccount"`
	Direction            string `json:"direction"`
	DocumentDate         string `json:"documentDate"`
	Filial               string `json:"filial"`
	Number               string `json:"number"`
	OperationCode        string `json:"operationCode"`
	OperationDate        string `json:"operationDate"`
	PaymentPurpose       string `json:"paymentPurpose"`
	Priority             string `json:"priority"`
	Revaln               string `json:"revaln"`
	UUID                 string `json:"uuid"`
	TransactionID        string `json:"transactionId"`
	DebtorCode           string `json:"debtorCode"`
	ExtendedDebtorCode   string `json:"extendedDebtorCode"`
	RurTransfer          struct {
		CartInfo struct {
			DocumentCode    string `json:"documentCode"`
			DocumentContent string `json:"documentContent"`
			DocumentDate    string `json:"documentDate"`
			DocumentNumber  string `json:"documentNumber"`
			PaymentNumber   string `json:"paymentNumber"`
			RestAmount      string `json:"restAmount"`
		} `json:"cartInfo"`
		DeliveryKind     string `json:"deliveryKind"`
		DepartmentalInfo struct {
			Uip             string `json:"uip"`
			DrawerStatus101 string `json:"drawerStatus101"`
			Kbk             string `json:"kbk"`
			Oktmo           string `json:"oktmo"`
			ReasonCode106   string `json:"reasonCode106"`
			TaxPeriod107    string `json:"taxPeriod107"`
			DocNumber108    string `json:"docNumber108"`
			DocDate109      string `json:"docDate109"`
			PaymentKind110  string `json:"paymentKind110"`
		} `json:"departmentalInfo"`
		PayeeAccount         string `json:"payeeAccount"`
		PayeeBankBic         string `json:"payeeBankBic"`
		PayeeBankCorrAccount string `json:"payeeBankCorrAccount"`
		PayeeBankName        string `json:"payeeBankName"`
		PayeeInn             string `json:"payeeInn"`
		PayeeKpp             string `json:"payeeKpp"`
		PayeeName            string `json:"payeeName"`
		PayerAccount         string `json:"payerAccount"`
		PayerBankBic         string `json:"payerBankBic"`
		PayerBankCorrAccount string `json:"payerBankCorrAccount"`
		PayerBankName        string `json:"payerBankName"`
		PayerInn             string `json:"payerInn"`
		PayerKpp             string `json:"payerKpp"`
		PayerName            string `json:"payerName"`
		PayingCondition      string `json:"payingCondition"`
		PurposeCode          string `json:"purposeCode"`
		ReceiptDate          string `json:"receiptDate"`
		ValueDate            string `json:"valueDate"`
	} `json:"rurTransfer"`
	SwiftTransfer struct {
		BankOperationCode                       string  `json:"bankOperationCode"`
		BeneficiaryBankAccount                  string  `json:"beneficiaryBankAccount"`
		BeneficiaryBankName                     string  `json:"beneficiaryBankName"`
		BeneficiaryBankOption                   string  `json:"beneficiaryBankOption"`
		BeneficiaryCustomerAccount              string  `json:"beneficiaryCustomerAccount"`
		BeneficiaryCustomerName                 string  `json:"beneficiaryCustomerName"`
		DetailsOfCharges                        string  `json:"detailsOfCharges"`
		ExchangeRate                            string  `json:"exchangeRate"`
		InstructedAmount                        string  `json:"instructedAmount"`
		InstructionCode                         string  `json:"instructionCode"`
		IntermediaryBankAccount                 string  `json:"intermediaryBankAccount"`
		IntermediaryBankName                    string  `json:"intermediaryBankName"`
		IntermediaryBankOption                  string  `json:"intermediaryBankOption"`
		MessageDestinator                       string  `json:"messageDestinator"`
		MessageIdentifier                       string  `json:"messageIdentifier"`
		MessageOriginator                       string  `json:"messageOriginator"`
		MessageReceiveTime                      string  `json:"messageReceiveTime"`
		MessageSendTime                         string  `json:"messageSendTime"`
		MessageType                             string  `json:"messageType"`
		OrderingCustomerAccount                 string  `json:"orderingCustomerAccount"`
		OrderingCustomerName                    string  `json:"orderingCustomerName"`
		OrderingCustomerOption                  string  `json:"orderingCustomerOption"`
		OrderingInstitutionAccount              string  `json:"orderingInstitutionAccount"`
		OrderingInstitutionName                 string  `json:"orderingInstitutionName"`
		OrderingInstitutionOption               string  `json:"orderingInstitutionOption"`
		ReceiverCharges                         string  `json:"receiverCharges"`
		ReceiverCorrespondentAccount            int64   `json:"receiverCorrespondentAccount"`
		ReceiverCorrespondentName               string  `json:"receiverCorrespondentName"`
		ReceiverCorrespondentOption             string  `json:"receiverCorrespondentOption"`
		RegulatoryReporting                     string  `json:"regulatoryReporting"`
		RemittanceInformation                   string  `json:"remittanceInformation"`
		SenderCharges                           string  `json:"senderCharges"`
		SenderCorrespondentAccount              string  `json:"senderCorrespondentAccount"`
		SenderCorrespondentName                 string  `json:"senderCorrespondentName"`
		SenderCorrespondentOption               string  `json:"senderCorrespondentOption"`
		SenderToReceiverInformation             string  `json:"senderToReceiverInformation"`
		TransactionReferenceNumber              string  `json:"transactionReferenceNumber"`
		TransactionRelatedReference             *string `json:"transactionRelatedReference"`
		TransactionTypeCode                     string  `json:"transactionTypeCode"`
		Urgent                                  string  `json:"urgent"`
		ValueDateCurrencyInterbankSettledAmount string  `json:"valueDateCurrencyInterbankSettledAmount"`
	} `json:"swiftTransfer"`
	CurTransfer struct {
		BankOperationCode                       string  `json:"bankOperationCode"`
		BeneficiaryBankAccount                  string  `json:"beneficiaryBankAccount"`
		BeneficiaryBankName                     string  `json:"beneficiaryBankName"`
		BeneficiaryBankOption                   string  `json:"beneficiaryBankOption"`
		BeneficiaryCustomerAccount              string  `json:"beneficiaryCustomerAccount"`
		BeneficiaryCustomerName                 string  `json:"beneficiaryCustomerName"`
		DetailsOfCharges                        string  `json:"detailsOfCharges"`
		ExchangeRate                            string  `json:"exchangeRate"`
		InstructedAmount                        string  `json:"instructedAmount"`
		InstructionCode                         string  `json:"instructionCode"`
		IntermediaryBankAccount                 string  `json:"intermediaryBankAccount"`
		IntermediaryBankName                    string  `json:"intermediaryBankName"`
		IntermediaryBankOption                  string  `json:"intermediaryBankOption"`
		MessageDestinator                       string  `json:"messageDestinator"`
		MessageIdentifier                       string  `json:"messageIdentifier"`
		MessageOriginator                       string  `json:"messageOriginator"`
		MessageReceiveTime                      string  `json:"messageReceiveTime"`
		MessageSendTime                         string  `json:"messageSendTime"`
		MessageType                             string  `json:"messageType"`
		OrderingCustomerAccount                 string  `json:"orderingCustomerAccount"`
		OrderingCustomerName                    string  `json:"orderingCustomerName"`
		OrderingCustomerOption                  string  `json:"orderingCustomerOption"`
		OrderingInstitutionAccount              string  `json:"orderingInstitutionAccount"`
		OrderingInstitutionName                 string  `json:"orderingInstitutionName"`
		OrderingInstitutionOption               string  `json:"orderingInstitutionOption"`
		ReceiverCharges                         string  `json:"receiverCharges"`
		ReceiverCorrespondentAccount            int64   `json:"receiverCorrespondentAccount"`
		ReceiverCorrespondentName               string  `json:"receiverCorrespondentName"`
		ReceiverCorrespondentOption             string  `json:"receiverCorrespondentOption"`
		RegulatoryReporting                     string  `json:"regulatoryReporting"`
		RemittanceInformation                   string  `json:"remittanceInformation"`
		SenderCharges                           string  `json:"senderCharges"`
		SenderCorrespondentAccount              string  `json:"senderCorrespondentAccount"`
		SenderCorrespondentName                 string  `json:"senderCorrespondentName"`
		SenderCorrespondentOption               string  `json:"senderCorrespondentOption"`
		SenderToReceiverInformation             string  `json:"senderToReceiverInformation"`
		TransactionReferenceNumber              string  `json:"transactionReferenceNumber"`
		TransactionRelatedReference             *string `json:"transactionRelatedReference"`
		TransactionTypeCode                     string  `json:"transactionTypeCode"`
		Urgent                                  string  `json:"urgent"`
		ValueDateCurrencyInterbankSettledAmount string  `json:"valueDateCurrencyInterbankSettledAmount"`
		PayeeBankBic                            int64   `json:"payeeBankBic"`
		PayeeBankCorrAccount                    int64   `json:"payeeBankCorrAccount"`
		PayeeAccount                            int64   `json:"payeeAccount"`
		PayeeBankName                           string  `json:"payeeBankName"`
		PayeeInn                                int64   `json:"payeeInn"`
		PayeeKpp                                int64   `json:"payeeKpp"`
		PayeeName                               string  `json:"payeeName"`
		PayerAccount                            int64   `json:"payerAccount"`
		PayerBankBic                            int64   `json:"payerBankBic"`
		PayerBankCorrAccount                    int64   `json:"payerBankCorrAccount"`
		PayerBankName                           string  `json:"payerBankName"`
		PayerInn                                int64   `json:"payerInn"`
		PayerKpp                                int64   `json:"payerKpp"`
		PayerName                               string  `json:"payerName"`
	}
}
